

    /*
     * Augmenting native objects is easy and the defaults are safe, as
     * by default, preventOverride is true. 
     */
    String.implmement
    (        
        /**
         * Trim whitespace from the begining and end of a string
         * @return {String}    A trimmed string.
         */
        function trim () 
        {
			var	str = this.replace(/^\s\s*/, ''),
				ws = /\s/,
				i = str.length;
			while (ws.test(str.charAt(--i)));
			return str.slice(0, i + 1);
        }
        
        /**
         * Determine if this string contains characters other than
         * whitespace.
         * @return {Boolean}
         */
    ,   function isEmpty () 
        {
            return 0 === this.trim().length;
        }
    );
    
    String.implementStatic
    (
        /**
         * Determine if a value is a string and is not and empty string
         * @param {Object} value   Any value.
         * @return {Boolean}       True whether the value supplied is a non empty string or not
         */
        function notEmpty (value) 
        {
            return this.type(value) && false === value.isEmpty();
        }
    );
